home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / src / fig18_06.jar / Ch18 / Fig18_06 / Fig18_06.cpp
C/C++ Source or Header  |  1997-11-10  |  976b  |  49 lines

  1. // Fig. 18.6: fig18_06.cpp
  2. // Using signal handling 
  3. #include <iostream.h>
  4. #include <iomanip.h>
  5. #include <signal.h>
  6. #include <stdlib.h>
  7. #include <time.h>
  8.  
  9. void signal_handler( int );
  10.  
  11. int main()
  12. {
  13.    signal( SIGINT, signal_handler );
  14.    srand( time( 0 ) );
  15.    
  16.    for ( int i = 1; i < 101; i++ ) {
  17.       int x = 1 + rand() % 50;
  18.       
  19.       if ( x == 25 )
  20.          raise( SIGINT );
  21.          
  22.       cout << setw( 4 ) << i;
  23.  
  24.       if ( i % 10 == 0 )
  25.          cout << endl;
  26.    }
  27.  
  28.    return 0;
  29. }
  30.  
  31. void signal_handler( int signalValue )
  32. {
  33.    cout << "\nInterrupt signal (" << signalValue
  34.         << ") received.\n"
  35.         << "Do you wish to continue (1 = yes or 2 = no)? ";
  36.  
  37.    int response;
  38.    cin >> response;
  39.  
  40.    while ( response != 1 && response != 2 ) {
  41.       cout << "(1 = yes or 2 = no)? ";
  42.       cin >> response;
  43.    }
  44.    
  45.    if ( response == 1 )
  46.       signal( SIGINT, signal_handler );
  47.    else
  48.       exit( EXIT_SUCCESS );
  49. }